#include <stdio.h>

#define __SC_DECL(t, a) t a

#define __MAP_1(m, t, a) m(t, a)
#define __MAP_2(m, t, a, ...) m(t, a), __MAP_1(m, __VA_ARGS__)
#define __MAP_3(m, t, a, ...) m(t, a), __MAP_2(m, __VA_ARGS__)
#define __MAP_4(m, t, a, ...) m(t, a), __MAP_3(m, __VA_ARGS__)
#define __MAP_5(m, t, a, ...) m(t, a), __MAP_4(m, __VA_ARGS__)
#define __MAP_6(m, t, a, ...) m(t, a), __MAP_5(m, __VA_ARGS__)
#define __MAP_ARGS(n, ...) __MAP_##n(__SC_DECL, __VA_ARGS__)

#define FUNCx(n, name, ret_type, ...)  ret_type func_##name(__MAP_ARGS(n, __VA_ARGS__))

#define FUNC_1(args...) FUNCx(1, args)
#define FUNC_2(args...) FUNCx(2, args)
#define FUNC_3(args...) FUNCx(3, args)
#define FUNC_4(args...) FUNCx(4, args)
#define FUNC_5(args...) FUNCx(5, args)
#define FUNC_6(args...) FUNCx(6, args)

FUNC_2(add, int, int, a, int, b) {
    return (a+b);
}

int main(int argc, char** argv) {
    int i,j;
    scanf("%d %d", &i, &j);
    printf("res: %d\n", func_add(i, j));
    return 0;
}
